Q1-Why does this message print with the object even though it is before the forEach?  

Q2-Why does this dedupe the new object
Q3-What triggers the falsy here that allow the {} to be added? 

```
var test = [{id:1,name:'s1'},{id:2,name:'s2'},{id:2,name:'s2'},{id:1,name:'s1'},{id:4,name:'s4'}];

    var test1 = {};
    //Q1
    console.log(test1);

    test.forEach(function(item){
     //Q2 and Q3
     var o = test1[item.name] = test1[item.name] || {};
     o.id = item.id;
    });

    <!--Output 
    {}
    ​
    s1: Object { id: 1 }
    ​
    s2: Object { id: 2 }
    ​
    s4: Object { id: 4 }
    ​
    __proto__: Object { … }
     --!>

```