Statically typed programming languages do type checking (i.e. the process of verifying and enforcing the constraints of types) at compile-time as opposed to run-time.
Dynamically typed programming languages do type checking at run-time as opposed to compile-time.
Examples of statically typed languages are :- Java, C, C++
Examples of dynamically typed languages are :- Perl, Ruby, Python, PHP, JavaScript