A statically typed language checks type relationships before execution. A dynamically typed language decides whether an operation is valid for the actual value at runtime.
The demo compares when the same invalid method call is discovered in each lane. Both approaches still need tests and input validation.
When to use
Use this distinction when choosing language tooling and deciding where errors should surface.