You Deserve It! (Boolean Logic Operator ||)


Hi beautiful code genius'. Would someone please explain why the add method within the cashRegister object utilizes the || boolean logic operator? I'm not sure what the purpose of this is.

This part: += (itemCost || 0);

My code should work, but here it is anyway:

function StaffMember(name,discountPercent){ = name;
    this.discountPercent = discountPercent;

var sally = new StaffMember("Sally",5);
var bob = new StaffMember("Bob",10);

// Create yourself again as 'me' with a staff discount of 20%
var me = new StaffMember("Chris",20);

var cashRegister = {
    lastTransactionAmount: 0,
    add: function(itemCost){ += (itemCost || 0);
        this.lastTransactionAmount = itemCost;
    scan: function(item,quantity){
        switch (item){
        case "eggs": this.add(0.98 * quantity); break;
        case "milk": this.add(1.23 * quantity); break;
        case "magazine": this.add(4.99 * quantity); break;
        case "chocolate": this.add(0.45 * quantity); break;
        return true;
    voidLastTransaction : function(){ -= this.lastTransactionAmount;
        this.lastTransactionAmount = 0;
    // Create a new method applyStaffDiscount here
    applyStaffDiscount: function(employee){ -=*(employee.discountPercent/100);

// Apply your staff discount by passing the 'me' object 
// to applyStaffDiscount

// Show the total bill
console.log('Your bill is ';
//console.log('Your bill is '


Here the explanation

If Javascript expects a Boolean true or false
and it is presented something else
it will interpret it to a truthy or falsy Value
Thus if you call the cashRegister.scan() Method
that would result in a
this.add(0.98 * undefined); ==> this.add( undefined );
therefore itemCost is undefined

Now if we read
for the OR explanation

Logical OR (||) 
expr1 || expr2 
1.Returns expr1 if it can be converted to true; otherwise, returns expr2. 
Thus, when used with Boolean values, 
2.|| returns true if either operand can be converted to true; 
3.if both can be converted to false, returns false.

In our case ( undefined || 0 ) would =return= 0


Makes sense! Thanks a lot for taking the time to write such a comprehensive answers. You are cool!


This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.