Bitcoin does not store balances. It stores unspent transaction outputs - UTXOs - which work like individual banknotes of different sizes sitting at your address. Your wallet adds them up and shows you a total.
When you pay, your wallet picks some of those "notes", spends them whole, and sends the excess back to you as change. That is why a transaction can have several inputs and an output back to yourself that you never typed. It also explains fees: they depend on the data size of the transaction, so a wallet full of tiny UTXOs can cost more to spend than one holding a few large ones.
💬 Had you noticed the "change" output in your own transactions?
Binance Academy covers this in more depth: https://www.binance.com/en/academy/glossary/unspent-transaction-output-utxo
Next lesson: Lightning: paying without waiting for a block
Trading crypto from Dubai since 2019.