Several people have already provided summaries of the translation process from a typical programming language down to actual machine code that a processor can execute.
To understand this process, it's helpful to have a concrete feel for what it's actually like to program at the level of machine code. Once you have an understanding of what the processor itself can do, it's easier to understand higher-level programming constructs as the abbreviations they are.
But unfortunately, writing machine code for a desktop computer is not much fun.
As an alternative, there is a great old game called Corewar in which you write little programs using a simplified machine language. These programs then battle each other for survival. You can write basic programs in the raw machine language, and then there's a system of macros so you don't have to repeat yourself so much, and that's the first step towards a full-featured language.
Another easy, rewarding, but low-level thing to do is to program a simple embedded controller like an Arduino. There are lots of easy introductions like this one available. You'll still be using a compiler, but the resulting machine code is easier to understand (if you want to) because the capabilities of the processor are so much simpler.
Both of these are great ways to get a feel for how digital computers actually work.