As a more concrete example for people out there. C is an example of a "high level" programming language. In C you might write a statement like "int x = 3;".
"Assembly language" is a "human readable" representation of the instructions that are actually executed by your CPUs*. There is a different assembly language for each processor or processor family. Your desktop or laptop computer with an Intel or AMD chip, and in all likelihood execute the "x86_64" language. Meanwhile, your phone is probably on the "AArch64" language. An example of assembly language is "mov rax, #3", which loads register rax with the value 3. Notice that we have dispensed with the niceties of variable names.
Assembly language is "assembled" into the "machine language.". To do this, the "human readable" mnemonics like "mov" are replaced with numbers called opcodes. The sequence of opcodes and arguments, like the number 3, are called the "machine code", because the CPU silicon can read those numbers from memory and follow the instructions with no additional translation steps*.
*Microcode throws a wrench here. Folks like Intel realized they could run things more efficiently if they translated each machine language instruction into simpler microcode instructions onboard the chip.
One time I did this thing with an internal calibration program where the user had to type floats into a text box. I set it up so that every key stroke was validated so that the string in the box had to parse as a valid number within the assigned range at all intermediate steps.
Everyone hated that.