Unityped, as in, they have only one type. You can assign any type to any variable, so all values have a single type.
> Also, division by zero is an runtime operation error, it is not really a type error. The division operation doesn't fail because it violated the type system, it fails because you can't mathematically divide by zero.
That is a type error in some type systems. The general notion of a type is a logical proposition. "Non-zero number" is a proposition and so you can represent this with types. The type of division is then `Num -> (Num != 0) -> Num`.
> Dynamic languages are untyped languages like javascript and racket.
This is not true. All languages are typed, either with rich types, or they are unityped (like the lambda calculus or JS).
Machine language is typed, and the fundamental types are (roughly) word and double. These are the registers of machine language, which you can roughly think of as variables in programming languages.