What should I read to understand semantics of programming languages?
There are many depending on where you want to start and what exactly you want. 
Usually textbook start with giving semantics to the While or IMP language and then give references to semantics of lambda calculus (typed untyped) unless you are reading Gunter. I am listing down a few below that I have referenced a number of times:


Operational Denotational and Axiomatic: 

a. Formal Semantics of Programming languages by
Wynskell

b. Programming Language Foundations by Stump

c. Theories of programming languages by Reynolds
Denotational semantics:
Denotational Semantics by Stoy
Denotational and Categorical semantics: Semantics of Programming languages by Gunter
Categorical semantics: Category theory for computing science by Barr and Wells 
Mostly operational semantics (may be with types involved): 

a. Types and Programming languages

b. Semantics Enginnering with PLT redux 


See also this question and this question on stackexchange.
and this further reading section of wikipedia article