Review JavaScript Fundamentals by Building a Gradebook App - Step 4

Tell us what’s happening:

My console is returning a message that if the student has an F they have passed the course, i need help understanding this else if statement, i have tried to use an else statement when the if statement failed to showing a passing grade. This was still making it show “F” as a passing grade in this problem.

Your code so far

function getAverage(scores) {
  let sum = 0;

  for (const score of scores) {
    sum += score;
  }

  return sum / scores.length;
}

function getGrade(score) {
  if (score === 100) {
    return "A++";
  } else if (score >= 90) {
    return "A";
  } else if (score >= 80) {
    return "B";
  } else if (score >= 70) {
    return "C";
  } else if (score >= 60) {
    return "D";
  } else {
    return "F";
  }
}

function hasPassingGrade(score) {
  return getGrade(score) !== "F";
}


// User Editable Region

function studentMsg(totalScores, studentScore) {
  let passed = ("Class average: " + getAverage(totalScores) + "." + " Your grade: " + getGrade(studentScore) + ". You passed the course.");
  let failed = ("Class average: " + getAverage(totalScores) + "." + " Your grade: " + getGrade(studentScore) + ". You failed the course.");
  if (getGrade(hasPassingGrade)){
    return passed 
    } else if (hasPassingGrade === false){ return failed; 
}}
console.log(studentMsg([56, 23, 89, 42, 75, 11, 68, 34, 91, 19], 100));
console.log(studentMsg([92, 88, 12, 77, 57, 100, 67, 38, 97, 89], 37));

// User Editable Region


Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36

Challenge Information:

Review JavaScript Fundamentals by Building a Gradebook App - Step 4

hasPassingGrade is the name of a function you wrote in an earlier step. You seem to be trying to pass this function reference to the getGrade function?

Yes I was. i’ve tried multiple different methods for it to see if hasPassingGrade was true. This was one of my attempts. I did attempt to leave hasPassingGrade as the only if statement and still get the same result.
if (hasPassingGrade){ like so.

to use a function you need to call it

Class average: 50.8. Your grade: A++. You passed the course.
Class average: 71.7. Your grade: F. You passed the course.

Here is the console log that i get. I thought the console log is calling the function?

hasPassingGrade is not in a console log, and you can log a function even without calling it, console log is needed to print to the console not to call a function

sorry i thought you meant the studentMsg function. is the “if” statement not calling the hasPassingGrade function? I don’t understand why it would print the statements if it wasn’t…

a function has a value even when not called, so the if will execute

here you are calling getGrade with hasPassingGrade as argument. you need to call hasPassingGrade here

other examples of function calls from your code

if (hasPassingGrade){
return passed }
else return failed }

I think i understand what you’re saying and i believe i’ve tried it, and i’ve got the same result…

you are not calling hasPassingGrade there, writing the name of the function is not the same as calling it

To call any function like hasPassingGrade, write () next to it. Then add the argument it is expecting inside the parentheses (if any).

Thanks for the help guys, was confused quite a bit

1 Like