7. you deserved it!


#1



https://www.codecademy.com/courses/close-the-super-makert/0/7?curriculum_id=506324b3a7dffd00020bf661#


In this lesson, my code passes, there are no errors, but I don't understand why it works, specifically line 34, in the applyStaffDiscount method. I don't get why this.total -=this.total * (employee.discountPercent/100); is what successfully meets the desired task of the method.

Can someone please explain what this line means and explain how the calculations in this method applies the staff member's discount percentage to the total? Instead of putting return this.total * employee.discountPercent / 100?


function StaffMember(name,discountPercent){
    this.name = 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("Jessica", 20);

var cashRegister = {
    total:0,
    lastTransactionAmount: 0,
    add: function(itemCost){
        this.total += (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.total -= this.lastTransactionAmount;
        this.lastTransactionAmount = 0;
    },
    // Create a new method applyStaffDiscount here
    applyStaffDiscount: function(employee) {
        this.total -=this.total * (employee.discountPercent/100);
    }
    
};

cashRegister.scan('eggs',1);
cashRegister.scan('milk',1);
cashRegister.scan('magazine',3);
// Apply your staff discount by passing the 'me' object 
// to applyStaffDiscount
cashRegister.applyStaffDiscount(me);

// Show the total bill
console.log('Your bill is '+cashRegister.total.toFixed(2));


#2

@jessbautista,
Defining the applyStaffDiscount Method ( which is a property with an associated =function= Value )
like

applyStaffDiscount: function(employee) {
        this.total -=this.total * (employee.discountPercent/100);
    }

You scan all the products.....
after scanning the products you will have a total.....
As employee's get a discount
you will have to =substract= the Discount-Amount from the total.....
is the short-cut writing of

applyStaffDiscount: function(employee) {
   this.total = this.total - (this.total * (employee.discountPercent/100));
    }

Is this the answer to your question ???


#3

If a discount of d % is being given on a quantity of cost c, then:

  1. the discount amount D will be c * d / 100.
  2. the new cost to pay will be c - D = c - c * d / 100

Substitute c as this.total and d as employee.discountPercent and you get what @leonhard.wettengmx.n has told above:

this.total = this.total - (this.total * (employee.discountPercent/100));

#4

If employee discount per-cent is P, with total bill being T, and after discount being A, then

A = T - (T * P / 100)

factorining,

A = T * ( 1 - P / 100)

so that,

this.total *= 1 - employee.discountPercent / 100

#5

Oh okay this makes sense to me now. Thank you


#6

A post was split to a new topic: Getting the correct answer but getting the error: "oops try again, false"