So by now you know about private and public IPs. The router uses Network Translation (NAT) to hide the private IP behind the public.
Suppose I go to a website, port 80, www.mydomain.com.
From your private ip (192.168.1.2) I open a connect www.mydomain.com. Clients use a high port > 512, random to talk outside. So your browser is using, say port 1025 connecting to www.mydomain.com port 80.
The router intercepts that because of NAT. It maps your public ip and port to a random port of the router. So outbound from the router, it uses your public ip and say port 1025.
So 192.168.1.2/1024 -> router's IP port 1025 -> connects to www.mydomain.com port 80.
Coming back it know things destined for routers public ip port 1025 is going to you, 192.168.1.2/1024 (that is why it maps it).
So back
www.mydomain.com/80 -> routers public ip/1025 -> 192.168.1.2/1024 (your browser)
This also why you need port forwarding to host anything, why you need UPnp , why you need to specify any inbound connection. The inbound mapping translation is not defined unless you define it or UPnp does it for you.