Compilers translate one programming language to another
Thats it. The majority of compilers you will see turn a language into some flavor of assembly (a language very very close to what the computer can understand) which is then turned into machine code, but they dont have to.There is however another way to evaluate programs
Transpiling
Transpiling is when you compile one not assembly language into another not assembly language.Many languages do this with javascript to make for web languages with js interop.
I personally am preferential to fennel which is a pretty little lisp which transpiles to lua.