NAT => Network address translation
In my house my router has been assigned dynamically a public ip, all my devices in home have a private ip address. Think of it as phone number for a company with phone extension for each employee. Hence it is responsibility of NAT ( acts like telephone receptionist) to translate private + public ip and establish the connection.
with ipv6, we do not need NAT any more 😉 since ipv4 are only 4 billion hows ipv6 which is 128 bits has delizzions ( more then billion, zillion etc) ip range available. But who knows we might even exhaust that too in future 😉