# Episode 6: Undefined vs Not Defined
- In first phase (mem alloc) JS assigns each variable to a placeholder called *undefined*
- *undefined* is when memory is allocated for the variable, but no value is assigned yet.
- If an object/variable is not even declared/found in mem alloc phase, and tried to access it then it is *Not defined*
> When variable is declared but not assigned value, its current value is undefined. But when the variable itself is not declared but called in code, then it is not defined.
```
console.log(x);
var x = 25;
console.log(x);
console.log(a);
```
>undefined
>25
>Uncaught ReferenceError: a is not defined
- JS is a loosely-typed / weakly-typed language. It doesn't attach variables to any datatype. We can say var a = 5, and then change the value to bool (a = true) or string
(a = 'hello') later on.
- **Never** assign *undefined* to a variable manually. Let it happen on it's own accord.