The quick version: Numi is not a JavaScript runtime, and you can’t write arbitrary code inside it. What’s genuinely useful to understand is that underneath the plain-English parsing, it follows standard mathematical operator precedence, the same PEMDAS rules any calculator or programming language uses. Knowing that explains most of the «why did this give a different answer than I expected» moments.

Clearing up a common misconception

Searches connecting Numi and JavaScript are usually looking for one of two things: either whether Numi can execute JavaScript code, or how its math logic compares to a language they already know. The direct answer to the first is no — the Numi app parses natural language and mathematical expressions, not general-purpose scripts. It’s not built as a coding environment, and treating it like one will only lead to disappointment.

What actually is underneath the syntax

What’s more useful is understanding that Numi’s math engine follows the same operator precedence rules that JavaScript, Python, or any standard calculator follows: multiplication and division happen before addition and subtraction, left to right, unless parentheses say otherwise. This is standard order of operations, not a Numi-specific quirk, and it’s the same PEMDAS logic taught in a basic math class.

Where this actually matters

Understanding this precedence explains results that otherwise look wrong. Consider a line like «$100 + 10% × 2». If you expected it to add 10% and then double the whole thing, that’s not what happens — multiplication runs before addition, so it’s calculating 10% times 2 first, then adding that to $100. Written with explicit parentheses instead, «($100 + 10%) × 2», forces the grouping you actually meant, and the result changes accordingly.

Using parentheses deliberately

The natural language parser is good at guessing intent from phrasing, but for anything with more than two operations, don’t rely on the guess — write the grouping explicitly:

(labor + expenses) × 1.08
labor + (expenses × 1.08)

These two lines produce genuinely different results because tax applies to a different base amount in each. Parentheses remove any ambiguity about which one you meant, and it’s the single habit that prevents most unexpected answers in a longer calculation.

Chained operations follow the same logic

A longer line like «subtotal + tax – discount × quantity» follows standard precedence: multiplication resolves first regardless of where it appears in the sentence, so discount × quantity calculates as one unit before the addition and subtraction happen left to right. If that’s not the intended order, parentheses fix it the same way they would in a spreadsheet formula or a line of code.

Why this framing helps even non-developers

You don’t need to know JavaScript to benefit from understanding this. Anyone who’s used a spreadsheet has already encountered the same precedence rules in cell formulas, and the same instinct — wrap anything ambiguous in parentheses rather than trust the tool to guess — applies directly to the Numi calculator. It’s the difference between writing a line and hoping it parsed the way you meant, versus writing a line that can only be interpreted one way.

Frequently asked questions

Whether you’re using Numi for Mac for natural language math or exploring its operator precedence behavior, the key is understanding how the parser works. If you haven’t tried Numi yet, its hybrid approach to calculation is genuinely different from anything else on macOS.

Can I write actual JavaScript code inside Numi?

No. Numi doesn’t execute arbitrary JavaScript. Its parser understands mathematical expressions, natural language phrasing, and its own function syntax, but it’s not a scripting environment.

Does Numi follow standard order of operations like PEMDAS?

Yes. It follows standard mathematical operator precedence, calculating multiplication and division before addition and subtraction, the same as any standard calculator or programming language.

Why does my calculation give a different answer than I expected?

This usually comes down to operator precedence or ambiguous phrasing. Adding parentheses to make the intended grouping explicit resolves most unexpected results.