You can’t compile your compiler using itself yet, but if you have another compiler for your language written in some other language, you use that one to compile your compiler once. Now you can use the compiled version of your own compiler to compile future versions of itself, and you can discard the original one compiled from the other compiler. This is called bootstrapping, from the image of pulling yourself up by your own bootstraps.
(it's in section 1.3, "The First Interpreter") helped me figure out what bootstrapping was.
Yeah. Today it's most commonly used in a somewhat different meaning, but with the same general sense of starting with nothing: When you power on your computer, how does it load its operating system into memory? Answer: it has a tiny bootstrap loader in read-only memory that can read, say, one disk record, the very first one on the disk. That one disk record contains a slightly more complicated loader (confusingly also called a bootstrap loader) whose job is to load in the full, complicated system loader that knows all about a dozen different disk formats and filesystem formats.
But also, that's still how you get a language running on new hardware.