Why does switching two column values work by simply reassigning the values in T-SQL?

For example, the following query works just as intended in Microsoft SQL Server (T-SQL).

UPDATE Customer SET ContactName = Customer.City, City = Customer.ContactName; 

I would like to know why the above works. I was expecting Customer.City to remain the same. Why does this happen?

Would appreciate if you could provide some sources so that I can read more on these topics.

Thank you.