Remember there is a socket with it's own port number at each end of the link, so Yahoo and Google each have open listening sockets on port 80.
When you connect to Yahoo your computer creates a socket on a random(ish) port to connect to the Yahoo listening socket on port 80
You:PortX <-> Yahoo:80
When you connect to Google your computer creates another socket on another random(ish) port to connect to the google listening socket on port 80
You:PortY <-> Google:80
In these cases it is unlikely that either PortX or PortY will be 80, the port numbers at each end of a link do not have to match (and in reality rarely do match).
The port defines the application (or protocol) thaat the conenction will be using and most port numbers below 1024 are reserved for specific applications (there is a list
here).
The reason that Yahoo, Google and all other web servers listen on port 80 is that your browser has to know which port it has to connect to in order to attach to the web-server. The only way to do this globally is if the port number is fixed, so all web-servers listen on port 80.
This is not a requirement though, you could set up a web server that listened on port 1200 but then you would have to include the port number in the URL when you typed the address into your browser so that it wouldn't use the default of 80.