Pushd/popd vs cd

I’m new to programming and starting with “Learn Ruby the Hard Way”. I’m starting with basic shell understanding and I’m stuck with understanding the difference between pushd/popd vs. cd. It appears that push/pop just move me around directories like cd would. I expected that with popd, it would ‘remove’ a directory (i.e. pop it off), but the directory still remains after using it.