Review JavaScript Fundamentals by Building a Gradebook App - Step 4

Tell us what’s happening:

The student Message is supposed to be returned in a string.
My code is not doing so. Currently, i used the double quoting for the initial part and I am getting it, but I don’t know what to do with the ending.
I have used double quoting, template literals but I am not getting it.
Can someone give me a helping hand?

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) {
  if (studentScore !== "F") {
    return "\"Class average: " +getAverage(totalScores)+ ". Your grade: " +getGrade(studentScore)+ ". You passed the course.";
  } else {
    return "Class average: " +getAverage(totalScores)+ ". Your grade: " +getGrade(studentScore)+ ". You failed the course.";
  }

}
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/109.0.0.0 Safari/537.36

Challenge Information:

Review JavaScript Fundamentals by Building a Gradebook App - Step 4

This definitively shouldn’t be here.

Even when it is not there, the code still won’t pass, because it does not return in a string. I placed it there when i was thinking of how to get the code to return a string.

why you think that your function doesn’t return a string?

I have taken it off but my code is still not passing.

The first test that fails is:

Your function call of studentMsg([92, 88, 12, 77, 57, 100, 67, 38, 97, 89], 37) should return the following message: "Class average: 71.7. Your grade: F. You failed the course." .

So let’s add this code for debugging:

console.log(studentMsg([92, 88, 12, 77, 57, 100, 67, 38, 97, 89], 37));
console.log("Class average: 71.7. Your grade: F. You failed the course.");

This print to the console:

"Class average: 71.7. Your grade: F. You passed the course.
Class average: 71.7. Your grade: F. You failed the course.

do you see the difference?

That means that there is another issue. What is your updated code?

The output in the console is not in a string form.

Why do you thing the output is not a string? I don’t think you are correct about that.

It is a string

if you write console.log(typeof studentMsg([92, 88, 12, 77, 57, 100, 67, 38, 97, 89], 37)) it prints string.

that’s not your issue

1 Like
function studentMsg(totalScores, studentScore) {
  if (studentScore !== "F") {
    return "Class average: " +getAverage(totalScores)+ ". Your grade: " +getGrade(studentScore)+ ". You passed the course.";
  } else {
    return "Class average: " +getAverage(totalScores)+ ". Your grade: " +getGrade(studentScore)+ ". You failed the course.";
  }

}

Yes, I do.
I am getting the latter now, but my code is still not passing

Let’s do this again with your new code

It prints:

Class average: 71.7. Your grade: F. You passed the course.
Class average: 71.7. Your grade: F. You failed the course.

Do you see the differnce?

I have been going over it but I still don’t get why it is not passing.

Because it expects “You failed” but your code output “You passed”

Ok, let me try again.

I have passed now.
My mistake was with the if condition.
Thank you all very Much.

What type of thing is stored in this variable?

student scores as in numbers.

Ok, then talk to me about this comparison