From the Yellow Paper of Ethereum.
There are 3 main steps to get from private -> address:
Create a random private key (64 (hex) characters / 256 bits / 32 bytes)
Derive the public key from this private key (128 (hex) characters / 512 bits / 64 bytes)
Derive the address from this public key. (40 (hex) characters / 160 bits / 20 bytes)
Even though a lot of people call the address the public key, it's actually not the case in Ethereum. There is a separate public key that acts as a middleman that you won't ever see,