Question:
in step 43 of the js beta music player project, we are asked to: add an if to check if userData?.currentSong is falsey. But if you type an if like below, it is accepted even though that's not a falsey check? I also looked at the code in step 44 and the condition doesn't seem to be a general falsey check there either, so maybe this step 43's instructions should be updated to say "add an if to check if userData?.currentSong is null"? a rewrite of the instructions is needed to be clearer about not requiring a falsey check but just a check against null. No response N/A No response
iirc the tests were updated to be more accepting of conditions that would still work for the project but weren't what the user stories ask
Hmm. I am not sure this issue fits the behaviour? It is really the description that is too restrictive in this case and doesn’t match the test?
There was change from requiring to falsey Further steps still have in the seed code.
It looks like when someone tried to fix the tests to allow the falsey answer they also changed the description in reverse to make it more restrictive than it was? (That is, a falsey condition requires that many conditions like false “” null and undefined are checked, but a null check is much simpler?)
Allowing any falsy value, through type coercion, implicitly allows all falsy values. However, we are not expecting the value to be an empty string or , so allowing explicit falsy value checks that isn't wouldn't be correct. is the explicit falsy value used by the code to denote "not set" or "unset", so allowing an explicit check for that value is fine. But I don't think the test should allow for an explicit value check. I don't believe there is a code path where the property being means the same as it being . If it is , I would assume something went wrong. Not that I thoroughly looked at the code. So if anything, we should update the test to not allow an explicit check but keep the check. Edit: Just to be super clear. I understand allowing is implicitly the same as allowing any explicit falsy value check. However, when reading code, explicit value checks signals something to the reader which a implicit check does not. So if I was reviewing the code, I would ask for an implicit falsy or an explicit check.
My confusion remains with the description. Someone sees this step’s description and posts on the forum with their code only checking for null, my first instinct is to say: hey, the instructions said check for a falsey not check for null. (This actually happened by the way which is why I opened this). Then I found out that actually the test didn’t care that the person wrote code that only checked for null. My point is this; if the test wants a null check then pls make the step ask for a null check and not a falsey check.
I assume we wanted to allow a falsy check instead of only a literal check, and in doing so we also change the written requirements to say a falsy check. I don't have an issue with removing the literal and part of the regex test. But the requirement doesn't state how the falsy check should be preformed, that is, it doesn't say it has to be an implicit coercion. So we might want to allow using as well.
I'm in the opposite camp (lasjorg's original camp?). There are other conditional points in the code flow that use an explicit check, and the property is initialised to in the code. It does not make sense to then allow a falsy condition in the step. We should revert the tests to require an explicit comparison.
I'm inclined to agree, but it is more an opinion. Strictly speaking, is used as an intentional value and other falsy values are not expected. Could you check for a by using implicit coercion? Sure. But in doing so, you are allowing potentially unexpected values to pass the check.
I will give my vote to revert the change back to a strict check. A falsy check seems too broad and allows for unexpected values.
I'm going to open this up for contribution. A PR which resolves this issue will update the instructions and tests for the linked step to require an explicit null check.
/assign
We typically do not assign issues. Instead, we accept the first pull request that comprehensively solves the issue. Issues labeled with or are open for contributions. Please make sure you read . We prioritize contributors following the instructions in our guide. Join us in or if you need help contributing - our community will be happy to assist you.

# --description-- <del> Within the arrow function of the event listener, add an `if` to check if `userData?.currentSong` is `falsey`. </del> <ins> Within the arrow function of the event listener, add an `if` to check if `userData?.currentSong` is `null`. </ins> Inside the `if` block, call the `playSong()` function with the `id` of the first song in the `userData?.songs` array. This will ensure the first song in the playlist is played first. # --hints-- <del> You should create an `if` statement with the condition `!userData?.currentSong`. </del> <ins> You should create an `if` statement with the condition `userData?.currentSong === null`. </ins> ```js <del> assert.match(code, /ifs*((s*!userData?.currentSongs*|s*userData?.currentSongs*===s*nulls*|s*userData?.currentSongs*===s*undefineds*))s*{/) </del> <ins> assert.match(code, /ifs*(s*userData?.currentSongs*===s*nulls*)s*{/); </ins> ``` You should call the `playSong` function with `userData?.songs[0].id` inside your `if` block. ```js <del> assert.match(code, /ifs*((s*!userData?.currentSongs*|s*userData?.currentSongs*===s*nulls*|s*userData?.currentSongs*===s*undefineds*))s*{s*playSong(s*userData?.songss*[s*0s*]s*.ids*)s*;?s*}/) </del> <ins> assert.match(code, /ifs*(s*userData?.currentSongs*===s*nulls*)s*{s*playSong(s*userData?.songss*[s*0s*]s*.ids*)s*;?s*}/); </ins> ``` # --seed--


Question:
There was a TODO comment left in the hints for the Equation Solver project <img width="759" alt="Screenshot 2024-09-30 at 11 11 37 AM" src=""The hint should be updated to the following: see explanation above see explanation above No response Device: [e.g. iPhone 6, Laptop] OS: [e.g. iOS 14, Windows 10, Ubuntu 20.04] Browser: [e.g. Chrome, Safari] Version: [e.g. 22] No response
This has been opened for contribution. The first comprehensive PR created will be reviewed and merged. We typically do not assign issues to anyone other than long-time contributors. If you would like to contribute and have not read the contributors docs, please do so here: If you have any issues with contributing, be sure to join us on the , or on the Happy coding
can you please add label to this issue as "Hacktoberfest"
Hi, I'd like to contribute to this issue! I'll update the hint for the () call to use a negative lookbehind and submit a PR shortly. Thanks for the opportunity!
Hello! I'm interested in resolving this issue by refining the str method within the Equation class. My plan is to adjust the () function to incorporate a negative lookbehind, ensuring that the digit '1' is only replaced when it isn't preceded by another digit. This approach will prevent unintended substitutions in multi-digit numbers. I'll prepare a pull request with these modifications soon.
I would like to contribute to this issue. I have contributed to hacktoberfest last year as well. Please assign it to me.
the repo has the label, the issue label don't matter. We typically do not assign issues. Instead, we accept the first pull request that comprehensively solves the issue. Issues labeled with or are open for contributions. Please make sure you read . We prioritize contributors following the instructions in our guide. Join us in or if you need help contributing - our community will be happy to assist you.
Please do not make any changes outside what is outlined in the issue. The scope of the issue to only update the hint text to remove the TODO comment. Any other changes will not be accepted in a PR Thank you
Thank you for the clarification! I'll ensure the changes in my PR are limited to updating the hint text and removing the TODO comment, as specified in the issue. I appreciate the guidance!
Thanks for the clarification Mam

{ <del> "node": true </del> <ins> /* * ENVIRONMENTS * ================= */ // Define globals exposed by Node.js. "node": true, /* * ENFORCING OPTIONS * ================= */ // Force all variable names to use either camelCase style or UPPER_CASE // with underscores. "camelcase": true, // Prohibit use of == and != in favor of === and !==. "eqeqeq": true, // Suppress warnings about == null comparisons. "eqnull": true, // Enforce tab width of 2 spaces. "indent": 2, // Prohibit use of a variable before it is defined. "latedef": true, // Require capitalized names for constructor functions. "newcap": true, // Enforce use of single quotation marks for strings. "quotmark": "single", // Prohibit trailing whitespace. "trailing": true, // Prohibit use of explicitly undeclared variables. "undef": true, // Warn when variables are defined but never used. "unused": true, // Enforce line length to 80 characters "maxlen": 80 </ins> }

<ins> { /* * ENVIRONMENTS * ================= */ // Define globals exposed by modern browsers. "browser": true, // Define globals exposed by jQuery. "jquery": true, /* * ENFORCING OPTIONS * ================= */ // Force all variable names to use either camelCase style or UPPER_CASE // with underscores. "camelcase": true, // Prohibit use of == and != in favor of === and !==. "eqeqeq": true, // Suppress warnings about == null comparisons. "eqnull": true, // Enforce tab width of 2 spaces. "indent": 2, // Prohibit use of a variable before it is defined. "latedef": true, // Require capitalized names for constructor functions. "newcap": true, // Enforce use of single quotation marks for strings. "quotmark": "single", // Prohibit trailing whitespace. "trailing": true, // Prohibit use of explicitly undeclared variables. "undef": true, // Warn when variables are defined but never used. "unused": true, // Enforce line length to 80 characters "maxlen": 80, // Enforce placing 'use strict' at the top function scope "strict": true' } </ins>


Question:
There was a TODO comment left in the hints for the Equation Solver project <img width="759" alt="Screenshot 2024-09-30 at 11 11 37 AM" src=""The hint should be updated to the following: see explanation above see explanation above No response Device: [e.g. iPhone 6, Laptop] OS: [e.g. iOS 14, Windows 10, Ubuntu 20.04] Browser: [e.g. Chrome, Safari] Version: [e.g. 22] No response
This has been opened for contribution. The first comprehensive PR created will be reviewed and merged. We typically do not assign issues to anyone other than long-time contributors. If you would like to contribute and have not read the contributors docs, please do so here: If you have any issues with contributing, be sure to join us on the , or on the Happy coding
can you please add label to this issue as "Hacktoberfest"
Hi, I'd like to contribute to this issue! I'll update the hint for the () call to use a negative lookbehind and submit a PR shortly. Thanks for the opportunity!
Hello! I'm interested in resolving this issue by refining the str method within the Equation class. My plan is to adjust the () function to incorporate a negative lookbehind, ensuring that the digit '1' is only replaced when it isn't preceded by another digit. This approach will prevent unintended substitutions in multi-digit numbers. I'll prepare a pull request with these modifications soon.
I would like to contribute to this issue. I have contributed to hacktoberfest last year as well. Please assign it to me.
the repo has the label, the issue label don't matter. We typically do not assign issues. Instead, we accept the first pull request that comprehensively solves the issue. Issues labeled with or are open for contributions. Please make sure you read . We prioritize contributors following the instructions in our guide. Join us in or if you need help contributing - our community will be happy to assist you.
Please do not make any changes outside what is outlined in the issue. The scope of the issue to only update the hint text to remove the TODO comment. Any other changes will not be accepted in a PR Thank you
Thank you for the clarification! I'll ensure the changes in my PR are limited to updating the hint text and removing the TODO comment, as specified in the issue. I appreciate the guidance!
Thanks for the clarification Mam

# --hints-- <del> You should modify the pattern passed as the first argument to the `re.sub()` call using a negative lookbehind. TODO: add details/improve wording </del> <ins> You should modify the pattern passed as the first argument to the `re.sub()` call using a negative lookbehind. </ins> ```js ({ test: () => assert(runPython(`


Question: When talking about template literals sometimes we use "template interpolation", I have not been able to find good documentation on this wording. It should be changed to "string interpolation" or "template literal" as needed. The changes needed are as follow: template interpolation -string interpolation use template interpolation -use string interpolation Please make sure you read our , we prioritize contributors following the instructions in our guides. Join us in our or our if you need help contributing; our moderators will guide you through this. Sometimes we may get more than one pull request. We typically accept the most quality contribution followed by the one that is made first. Happy contributing.

Use the `setAttribute` method on the `playButton` element to set an attribute named `"aria-label"`. Using a ternary, set the attribute value to `Play ${song.title}` or `"Play"` if `song?.title` is not available. <del> Don't forget you need template interpolation here, so you need to use backticks. </del> <ins> Don't forget you need string interpolation here, so you need to use backticks. </ins> # --hints--

# --description-- <del> Now create an image tag and give it the `class` `"user-img"`. Use template interpolation to set the `src` attribute to `image` you destructured earlier. Set the `alt` attribute to `author` followed by the text `"avatar"`. Make sure there is a space between the `author` variable and the word `"avatar"`, for example, `"Quincy Larson avatar"`. </del> <ins> Now create an image tag and give it the `class` `"user-img"`. Use string interpolation to set the `src` attribute to `image` you destructured earlier. Set the `alt` attribute to `author` followed by the text `"avatar"`. Make sure there is a space between the `author` variable and the word `"avatar"`, for example, `"Quincy Larson avatar"`. </ins> # --hints--


Question:
We prefer to use double quotes for JavasScript string, so the following code examples should be updated to follow the convention:
This issue is open for contributions. The files that you should be updating are linked in the original post. We typically do not assign issues. Instead, we accept the most quality contribution followed by the one that is made first. Please make sure you read our as well as our , we prioritize contributors following the instructions in our guides. Join us in our or our if you need help contributing; our moderators will guide you through this. Happy contributing.

In the previous lecture videos, you learned how to access characters in a string like this: ```js <del> const firstName = 'Jessica'; // returns 'J' </del> <ins> const firstName = "Jessica"; // returns "J" </ins> firstName[0]; ```

```js const firstName = "Jessica"; <del> // returns 'a' </del> <ins> // returns "a" </ins> firstName[firstName.length - 1]; ```


Question:
There is a typo in the explanation of the inequality operator (!=). The current sentence is: "It means not equal and returns false where equality would return true and vice versa." This explanation is incorrect because the inequality operator (!=) should return true when two values are not equal and false when they are equal. Suggested correction: "It means not equal and returns true when two values are not equal, and false when they are equal." This adjustment correctly explains the behavior of the inequality operator (!=). The explanation of the inequality operator (!=) should clearly state that it returns true when two values are not equal and false when they are equal. ! Device: Laptop OS: Windows 10 This is a minor issue but could potentially confuse new learners. Correcting this would improve clarity for those studying JavaScript comparison operators.
I would like to work on this issue, please assign this issue to me
Hi , , could you please assign this issue to me? I'd like to work on it. Thanks!
This issue has not been triaged or opened for contributions. Also, we don't typically assign issue. Please consult the contributing guide.
Thank you for the clarification, . I appreciate your guidance on the contribution process. I will review the contributing guide to understand the triaging process better. If possible, could you provide more details on how I can contribute to this issue? Thanks again!
The sentence seems correct to me, where the equality operator would return true, the inequality operator would return false and vice versa
Yeah, seems accurate to me
Thank you for your feedback! I understand how the sentence might seem correct at first glance. However, the issue lies in the explanation of the inequality operator (). The sentence currently says: "The inequality operator means not equal and returns false where equality would return true and vice versa." This could be confusing because when two values are not equal, the inequality operator () should return true, not false. So, it would be clearer to state that the inequality operator returns true when the values are not equal. Would you agree that updating the sentence to reflect this distinction would make the explanation more accurate? Thanks again for your input!
That looks like GPT? Anyways, the sentence does in fact say that the inequality operator return the opposite of the equality operator. The inequality operator ... returns false where equality would return true and vice versa. The sentence is correct in a literal sense. It may be clearer to split the sentence, but it is not incorrect. If we want to change it to make the current meaning more clear, I would say
A/C to me ..... The term "inequality" refers to the condition of not being equal, particularly in the context of comparing two values. When the two values do not match, or in other words, are not equal, we can say they are unequal. As a result, the != operator will return TRUE because the values are indeed not equal. Conversely, when the values match, the != operator will return FALSE, indicating that both values are equal....It's simple. Conclusion: Where equality fails, the != operator will yield TRUE as output. Conversely, where equality holds, the != operator will yield FALSE as output.
Yep, and that's what the current text says. But I don't love the compound sentence as it is written. The curriculum should generally favor simpler grammatical constructions.
it's on the legacy curriculum, if someone wants to propose a change and make a PR, go for it, but it will be low priority
If someone makes a PR, this is what I'd say
With this JavaScript issue, I learn English too. Thank you.
Can I work on this issue?

# --description-- <del> The inequality operator (`!=`) is the opposite of the equality operator. It means not equal and returns `false` where equality would return `true` and *vice versa*. Like the equality operator, the inequality operator will convert data types of values while comparing. </del> <ins> The inequality operator (`!=`) is the opposite of the equality operator. Inequality means not equal. The inequality operator returns `false` when the equality operator would return `true` and *vice versa*. Like the equality operator, the inequality operator will convert data types of values while comparing. </ins> **Examples**


Question:
and are not being replaced by their values in hints: ! While in the console the actual and expected values are visible: ! To reproduce, go to any challenge that uses and/or :
Happening for me in hints for step 76:
Thank you for mentioning, but the fix has not been deployed yet.

export type Test = { pass?: boolean; err?: string; <ins> message?: string; </ins> } & (ChallengeTest | CertTest); export type ChallengeTest = {

} from '../../../redux/selectors'; import { ChallengeFiles, <del> ChallengeTest, </del> Dimensions, FileKey, ResizeProps,

isResetting: boolean, isSignedIn: boolean, { theme }: { theme: Themes }, <del> tests: [{ text: string; testString: string }], </del> <ins> tests: [{ text: string; testString: string; message?: string }], </ins> isChallengeCompleted: boolean ) => ({ attempts,

? 'vs-custom' : editorSystemTheme; <del> const isFailedChallengeTest = (test: Test): test is ChallengeTest => !!test.err && 'text' in test; const firstFailedTest = props.tests.find<ChallengeTest>(test => isFailedChallengeTest(test) ); </del> <ins> const firstFailedTest = props.tests.find(test => !!test.err); </ins> return ( <Suspense fallback={<Loader loaderDelay={600} />}>

openHelpModal={props.openHelpModal} openResetModal={props.openResetModal} tryToExecuteChallenge={tryToExecuteChallenge} <del> hint={firstFailedTest?.text} </del> <ins> hint={firstFailedTest?.message} </ins> testsLength={props.tests.length} attempts={attemptsRef.current} challengeIsCompleted={challengeIsComplete()}

newTest.stack = stack; } <del> newTest.message = newTest.message.replace(/<p>/, `<p>${i + 1}. `); yield put(updateConsole(newTest.message)); </del> <ins> const withIndex = newTest.message.replace(/<p>/, `<p>${i + 1}. `); yield put(updateConsole(withIndex)); </ins> } finally { testResults.push(newTest); }


Question:
There is an option being displayed as a code block, rather than inline code like its siblings: <details<summaryScreenshot</summary! </detailsMake the following change: js --- (); --- ();` To
This issue is open to first-time code contributors to this repository. The file that you should be updating is linked in the original post. We typically do not assign issues. Instead, we accept the most quality contribution followed by the one that is made first. Please make sure you read our as well as our , we prioritize contributors following the instructions in our guides. Join us in our or our if you need help contributing; our moderators will guide you through this. Happy contributing.
I'm limiting comments in this issue to reduce noise. If you're interested in contributing, everything you need is provided in the thread.

--- <del> ```js console.log(`${string1} ${string2}`); ``` </del> <ins> ```console.log(`${string1} ${string2}`);``` </ins> ---