Why a transaction reads uncommitted value of a var updated by other transaction?

If a transaction updates a value of variable in local buffer, then how other transaction is able to read that value? Why dirty read is caused? The other transaction should have read the value of that var from the db and not local buffer of the other transaction. As according to isolation property: " Changes occurring in a particular transaction will not be visible to any other transaction until that particular change in that transaction is written to memory or has been committed"