Question: Is there any expression where by an object's toString method is **implicitly** called overriding its valueOf method? 

In the examples below, valueOf is always called implicitly (overriding toString).

```
"4" + {
    toString: function () {
        return "4";
    },
    valueOf: function () {
        return 6;
    }
};    // => "46", was expecting "44"

4 + {
    toString: function () {
        return "6";
    },
    valueOf: function () {
        return 4;
    }
};    // => 8

4 + {
    toString: function () {
        return 6;
    },
    valueOf: function() {
        return "4";
    }
};    // => "44"

```

i.e.:

Can we write an expression where by toString is implicitly called over valueOf (i.e without explicitly calling toString)?

Answer: 
The + operator on Date objects uses toString not valueOf. Also if valueOf returns a non-primitive value then the toString method is called next. (JavaScript - The definitive guide, section 3.14) Using your example:

```
var result = "4" + {
    toString: function () {
        return "4";
    },
    valueOf: function () {
        return this; // returning an object, not a primitive
    }
};

```

Result is now 44.
> 
> *Is there any expression*
> 
> 
> 

Yes. Here's an example that will use `toString`:

```
alert({
    toString: function () {
        return "4";
    },
    valueOf: function () {
        return 6;
    }
});  // alerts "4"

```