I am having troubles with implicit coercion with the + operator in JavaScript. Namely the priority order of valueOf and toString.

`var obj = {};`

`obj.toString();` => "[object Object]"

`obj.valueOf();` => Object {}

`'Hello ' + obj;` => "Hello [object Object]"

So obj is implicitly coerced to a string using the toString() method over valueOf();

```
var obj2 = {
    toString: function() {
        return "[object MyObject]"; 
    },
    valueOf: function() { 
        return 17;
    }
};

```

`obj2.toString();` => "[object MyObject]"

`obj2.valueOf();` => 17

`'Hello ' + obj2;` => "Hello 17"

So when I override the toString and valueOf methods, the + operator will coerce with valueOf.

What am I missing? Thanks.