> A language is typed if the specification of _every_ operation defines types of data to which the operation is applicable, with the implication that it is not applicable to other types.
For a language to be typed, both the data must have a type and the operations must have a type specification.
> "a" * "b"
NaN
In a dynamically typed language, that specification is enforced at runtime. > true / false
Infinity
In a statically typed language, that specification is enforced by a compiler. > setInterval(function(){ console.log("hi") }, "later")
> hi
> hi
> hi
> hi
...
As far as I can tell, JavaScript doesn't concern itself with any of that. It's not typed.