Transactions are approved in units called "blocks."
The bitcoin protocol validates or "confirms" transactions in chunks called "blocks." It specifies that blocks can be no bigger than 1 megabyte, which means the number of transactions each block can contain is "capped." Not only that, but blocks can only be created once every ten minutes (on average).
Going back to the concrete example from earlier, it's like bitcoin elects someone in the town to be a transaction validator every ten minutes, and forces the validator to approve no more than 1MB of transactions. Of course, this limits the number of transactions per second that can run on the system, so in order to figure out which transactions make it into every block, bitcoin also allows transactions to have a variable fee attached.
If there are too many transactions to fit in a particular block for a given ten-minute interval, the validator will generally just choose the ones with the highest fees to include in the block, since the validator gets to keep the fees. You might be wondering: Why does bitcoin intentionally limit the number of transactions per second its system can sustain? The main reason is scalability and, indirectly, security.
Remember in the concrete example from before that everyone has to keep a notebook with everyone's balance in it — but in bitcoin everyone has to keep a copy not only of everyone's balance, but also every transaction that has ever been executed on the system. This sounds wasteful, and it is, but it's the only way to make sure that the system is robust to various kinds of attacks.
For example, if everyone only kept balance information but didn't keep the transactions that lead to the balances, new people joining the network that were trying to bootstrap their balance notebooks wouldn't be able verify that the data they got was legit. A concrete example helps here:
So, why does the bitcoin protocol limit the block size to 1MB and the "block time" to 10 minutes?
The reason is because if it didn't, there would be too many transactions for everyone to store. Because everyone has to store a full copy of all transactions that have ever occurred, the more transactions per second you allow the fewer people you'll have who will be willing to join your network. Sure, you could designate people to store all the transactions, and just always go to them whenever you want to send/receive money, but then you just end up with the modern banking system, which as we saw earlier isn't very robust to attacks. In other words, there is a single point of failure where if these designated people get compromised, and the entire system breaks down.
Thus, there's this fundamental trade-off between transactions-per-second (TPS) and the number of so-called "full nodes," computers that store all the transactions, you have running on your network. As a result, this trade-off between TPS and decentralization has actually resulted in a heated debate, known as the block size limit controversy, where some people want to increase the TPS in favor of slightly more centralization, and some people don't.