According to the ECMAScript specification at https://www.ecma-international.org/ecma-262/5.1/#sec-11.6.1 It says when The Addition operator ( + ) is applied and the primitive values of given operands are not strings, both the operands are converted to primitive values, and then numeric value of those primitive values and add them. For example.
let x = 2 + null;
Here the 2 and null are both converted into Primitive values ie, 2(Number already primitive) and null (already primitive). And then converted to number with ToNumber function which gives values 2 and +0 for 2 and null respectively as per ToNumber. Now the values become
let x = 2 + (+0);
which become
let x = 2 + 0;
which become 2. Since the null and undefined are already primitive values. The [[DefaultValue]] isn't required here ie, not required to use valueOf since it is already a primitive value. The valueOf or toString are only required for values of Object type as mentioned in ToPrimitive.