Operador Plus com objetos javascript

"" + {} avalia como"[object Object]"

0 + {} avalia como"0[object Object]"

Contudo,+ {} por si só avalia paraNaN, portanto, está sendo convertido em um número. Como é que isso+ {} é convertido em uma sequência na expressão0 + {}?