These layers aren't literal, though. For example, the JS VM can generate native machine code that can run just as fast as the assembly in layer 1. It's literally in the same language. (It won't be as fast always, of course, but in some cases it will.)
Also, there is no reason Lua in JS could not run at similar speed to JS, if the translation from Lua to JS is efficient enough. Whether that is possible depends on how close Lua and JS semantics are. That could also be at least partially achieved by using a Lua VM that has a JIT, and implementing a JIT backend that emits JS. Such an approach could be quite fast.