Dynamic programming languages do not strongly type the variable types at compile time, but infer the type of variables at run time. These languages also typically have inferencing based upon use.
For example:
var myValue = "123";
print myValue;
myValue = myValue + "456"; //Concats a string
print myValue;
myValue = myValue + 456; //Infers the value as a number, and adds to the value
print myValue;
Results:
123
123456
123912