'The program keeps doing other if statements [closed]

I'm building a calculator application, and when I want to use another mathematical expression, it doesn't work. I want to do subtraction, and it does addition, as if the program didn't see other if statements.

function Output(a) {
    window.alert(a)
    }
expression = window.prompt("what expression do you want to use? addition/subtraction/multiplication or divison");
if (expression = "addition") {
    additionValue1 = window.prompt("Value1: ");
    additionValue2 = window.prompt("Value2: ");
    Output(parseInt(additionValue1, 10) + parseInt(additionValue2, 10));
}
if (expression = "subtraction") {
    subtractionValue1 = window.prompt("Value1: ");
    subtractionValue2 = window.prompt("Value2: ");
    Output(parseInt(subtractionValue1, 10) - parseInt(subtractionValue2, 10));
}
if (expression = "multiplication") {
    multiplicationValue1 = window.prompt("Value1: ");
    multiplicationValue2 = window.prompt("Value2: ");
    Output(parseInt(multiplicationValue1, 10) * parseInt(multiplicationValue2, 10));
}
if (expression = "divison") {
    divisionValue1 = window.prompt("Value1: ");
    divisionValue2 = window.prompt("Value2: ");
    Output(parseInt(divisionValue1, 10) / parseInt(divisionValue2, 10));
}

Thanks.



Solution 1:[1]

You should use == or === for comparing values. The single = is for assignment.

if (expression === "addition") { // Do something... }

Solution 2:[2]

expression = window.prompt("what expression do you want to use? addition/subtraction/multiplication or divison");
if (expression == "addition") {
    additionValue1 = window.prompt("Value1: ");
    additionValue2 = window.prompt("Value2: ");
    Output(parseInt(additionValue1, 10) + parseInt(additionValue2, 10));
}
if (expression == "subtraction") {
    subtractionValue1 = window.prompt("Value1: ");
    subtractionValue2 = window.prompt("Value2: ");
    Output(parseInt(subtractionValue1, 10) - parseInt(subtractionValue2, 10));
}
if (expression == "multiplication") {
    multiplicationValue1 = window.prompt("Value1: ");
    multiplicationValue2 = window.prompt("Value2: ");
    Output(parseInt(multiplicationValue1, 10) * parseInt(multiplicationValue2, 10));
}
if (expression == "divison") {
    divisionValue1 = window.prompt("Value1: ");
    divisionValue2 = window.prompt("Value2: ");
    Output(parseInt(divisionValue1, 10) / parseInt(divisionValue2, 10));
}

You were assigning the variable instead of comparing it. The assignment operator is =, you want == for a comparison. I also added a space after Value1: in the prompts, otherwise you were asking for undefined. (I’m assuming you want parseInt on the division result because otherwise it would be a float.)

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Camilo
Solution 2 Shannon