数学とコンピュータプログラミング において、演算順序とは、与えられた数式を評価するためにどの算術演算を最初に実行するかに関する規則の集合です。
これらの規則は、演算の順位付けによって形式化されます。演算の順位は優先順位と呼ばれ、優先順位の高い演算は優先順位の低い演算よりも先に実行されます。計算機は一般的に、同じ優先順位の演算を左から右へ実行しますが、[ 1 ]一部のプログラミング言語や計算機では異なる規則が採用されています。
たとえば、乗算は加算よりも優先順位が高く、これは現代の代数記法が導入されて以来変わっていません。[ 2 ] [ 3 ]したがって、式1 + 2 × 3では、乗算が加算の前に実行され、式の値は1 + (2 × 3) = 7となり、(1 + 2) × 3 = 9にはなりません。 16 世紀と 17 世紀に指数が導入されたとき、指数は加算と乗算の両方よりも優先され、底の右側に上付き文字として配置されました。[ 2 ]したがって、 3 + 5 2 = 28および3 × 5 2 = 75 となります。
これらの規則は、表記の曖昧さを避けつつ、表記を簡潔にするために存在します。[ 4 ]優先順位の規則を無視したり、単に強調したりしたい場合は、括弧( ) を使用できます。たとえば、(2 + 3) × 4 = 20は加算を乗算の前に行うように強制し、(3 + 5) 2 = 64は加算をべき乗の前に行うように強制します。数式で括弧のペアを複数回使用する必要がある場合 (括弧が入れ子になっている場合など)、混乱を避けるために括弧を他の種類の角括弧に置き換えることができます(例: [2 × (3 + 4)] − 5 = 9 )。
これらの規則は、通常の記法(中置記法と呼ばれる)が使用される場合にのみ意味を持ちます。すべての演算に関数記法またはポーランド記法が使用される場合、演算の順序は記法自体によって決まります。
演算順序、つまり式中の演算が通常実行される順序は、数学、科学、技術、そして多くのコンピュータプログラミング言語で採用されている慣習に由来する。それは次のように要約される。[ 2 ] [ 5 ]
つまり、式を評価するには、まず括弧内の部分式を評価します。括弧内に複数の部分式がある場合は、内側から外側へと評価していきます。括弧内かどうかにかかわらず、上記のリストの中で優先順位の高い演算が最初に適用されます。同じ優先順位の演算は、慣例的に左から右へと評価されます。
各除算を逆数の乗算(逆数)に置き換えると、乗法の結合法則と交換法則により、各項の因数を任意の順序で乗算できます。乗算と除算は同等の優先順位が与えられる場合もあれば、乗算が除算よりも高い優先順位が与えられる場合もあります。詳しくは、後述の「混合除算と乗算」を参照してください。各減算を逆数の加算(加法逆数)に置き換えると、加法の結合法則と交換法則により、各項を任意の順序で加算できます。
平方根を表す根号記号 は、伝統的に被除数の上にバー(vinculum )を追加することで拡張されます。これにより、被除数を括弧で囲む必要がなくなります。他の関数では、曖昧さを避けるために入力を括弧で囲みます。 [ 6 ] [ 7 ] [ a ]入力が単一の数値変数または定数の場合は括弧を省略できます。[ 2 ] sin x = sin( x )やsin π = sin( π )の場合がそうです。[ a ] 伝統的にこの規則は単項式にも適用されます。つまり、sin 3 x = sin(3 x )やsin 1/2 xy = sin( 1/2 xy )ですが、 sin x + y = sin( x ) + yとなります。なぜなら、 x + yは単項式ではないからです。しかし、この慣習は普遍的に理解されているわけではなく、明示的に括弧を使うことを好む著者もいます。 [ b ]計算機やプログラミング言語によっては、関数の入力を括弧で囲む必要がありますが、そうでないものもあります。
括弧や代替グループ化記号は、通常の演算順序を変更したり、意図した順序を明示的に指定したりするために使用できます。グループ化された記号は、単一の式として扱うことができます。[ 2 ]
加算の前に乗算する:
括弧内の部分式が最初に評価されます。
乗算の前に累乗、減算の前に乗算:
式が上付き文字として記述されている場合、上付き文字は基数の上の位置によってグループ化されているとみなされます。
ルート シンボルのオペランドはオーバーバーによって決定されます。
水平の分数線は、上側の部分式を下側の部分式で分割した、グループ化された 2 つの部分式を形成します。
括弧は入れ子にすることができ、内側から外側に向かって評価されます。読みやすさを考慮して、外側の括弧は内側の括弧よりも大きくすることができます。また、中括弧{ } や角括弧[ ]などの他のグループ化記号を括弧( )と一緒に使用することもあります。例:
単項演算 「−」 (通常は「マイナス」と発音)については様々な慣習があります。数式や印刷物では、−3 2という表現は−(3 2 ) = −9と解釈されます。[ 2 ] [ 8 ]
一部のアプリケーションやプログラミング言語、特にMicrosoft Excel、PlanMaker (およびその他のスプレッドシートアプリケーション)、プログラミング言語 bcでは、単項演算が二項演算よりも優先されます。つまり、単項マイナスは累乗よりも優先されるため、これらの言語では −3 2は(−3) 2 = 9と解釈されます。[ 9 ]これは二項マイナス演算 '−'には適用されません。たとえば、Microsoft Excel では、数式=-2^2、=(-2)^2は=0+-2^24 を返しますが、数式=0-2^2、 は=-(2^2)−4 を返します。
'÷'で表される除算と'×'で表される乗算の両方を含む式を解釈するための普遍的な慣例はありません。提案されている慣例には、演算に等しい優先順位を割り当て、左から右へ評価する、または除算を逆数による乗算と同等に扱い、任意の順序で評価する、[ 10 ]すべての乗算を最初に評価し、その後に左から右へ除算を評価する、またはそのような表現を避け、代わりに常に明示的な括弧で囲むことで曖昧さを解消する、などがあります。[ 11 ]
初等教育以外では、割り算の記号「÷」はほとんど使われず、代数分数に置き換えられます。[ 12 ]最も明確かつ明確に分数を書くには、分子を分母の上に重ね、分数線で区切って「縦書き」します。しかし、分子と分母をスラッシュ記号「/」で区切って「横書き」することもできます。[ 13 ]つまり、a ÷ bのような表現は避け、代わりに1つの/bまたはa / b。
並置によって表される乗算(暗黙の乗算とも呼ばれる)は視覚的な単位を作成し、多くの場合、他のほとんどの演算よりも優先順位が高く設定されます。学術文献では、明示的な括弧なしでインライン分数が暗黙の乗算と組み合わされている場合、乗算は通常、除算よりも優先順位が高いと解釈され、たとえば、 1 / 2 nは、 (1 / 2) · nではなく1 / (2 · n )を意味すると解釈されます。[ 2 ] [ 10 ] [ 14 ] [ 15 ]たとえば、Physical Review誌の原稿投稿規定では、乗算が除算よりも優先されると明記されており[ 16 ]また、これはLandauとLifshitzによるCourse of Theoretical Physics [ c ]などの物理学の教科書やGraham、Knuth、PatashnikによるConcrete Mathematicsなどの数学の教科書でも遵守されている慣例です。[ 17 ]しかし、一部の著者はa / bcのような表現を推奨せず、括弧a / ( bc )を明示的に使用することを推奨しています。[ 3 ]
より複雑なケースでは、より曖昧になります。例えば、1 / 2 π ( a + b )という表記は、 1 / [2 π · ( a + b )]または[1 / (2 π )] · ( a + b )のいずれかを意味する可能性があります 。[ 18 ]文脈によっては解釈が異なる場合があります。Physical Reviewの投稿規定では、 a / b / cという形式の表現は推奨されていません。より明確な表現( a / b ) / cまたはa / ( b / c )の方が曖昧さがありません。[ 16 ]

この曖昧さはインターネットミームの題材となっており、 「8÷2(2+2)」には2つの矛盾する解釈がある。8÷[2·(2+2)]=1と(8÷2)·(2+2)=16である。[ 15 ] [ 19 ]数学教育研究者のHung-Hsi Wuは「現実の生活でこのような計算をすることは決してない」と指摘し、このような不自然な例を「不合理に複雑なルールを使って何も知らない人を罠にかけるように設計された一種のGotcha!社交ゲーム」と呼んでいる。[ 12 ]
指数表記が上付き文字で積み重ねられた記号で示される場合、通常は上から下に進むのがルールである: [ 2 ] [ 7 ]
これは通常、( a b ) cと等しくありません。この規則は、指数法には( a b ) c = a bcという性質があるため、連続指数法を用いる必要がないため便利です。
しかし、指数がキャレット(^)や矢印(↑)などの明示的な記号で表される場合、共通の標準はありません。例えば、Microsoft Excelや計算プログラミング言語MATLABでは( a b ) cと評価されますが、Google SearchやWolfram Alphaではa ( b c )と評価されます。したがって、前者の場合は4,096、後者の場合は262,144と評価されます。 a^b^c4^3^2
小学校では、生徒が演算の順序を覚えられるように、記憶のための頭字語がよく教えられています。[ 20 ] [ 21 ] PEMDASという頭字語は、指数、乗算/除算、加算/減算の頭文字をとっており、[ 22 ]米国[ 23 ]やフランスでよく使われています。[ 24 ]これらの文字は、「Please Excuse My Dear Aunt Sally」のように、記憶術の文章の単語に展開されることもあります。[ 25 ]英国やその他の英連邦諸国では、分数、乗算、除算/乗算、加算/減算を表す BODMAS (または BOMDAS の場合もあります) が使われており、「 of 」は分数の乗算を意味します。[ 26 ] [ 27 ] Oは指数や根号を意味するOrderと展開されることもある。[ 27 ] [ 28 ]また、 BIDMASという代替記憶法では、Iが指標として使われることもある。[ 27 ] [ 29 ]カナダとニュージーランドではBEDMASが一般的である。[ 30 ]
これらの記憶法は、このように書くと誤解を招く可能性がある。[ 25 ]例えば、上記の規則のいずれかを「最初に加算、その後に減算」と誤って解釈すると、式[ 25 ] は と誤って評価されるが、正しい評価は である。 の場合、これらの値は異なる。
ドイツでは、この慣習は単に「点演算を線演算の前に行う」という形で教えられています。これは、教えられる演算子記号U+00B7・中点(乗算)、U+2236∶比(除算)、U+002B+正符号(加算)、U+2212−負符号(減算)の図形的な形状を指しています。これにより、上記の誤解が生じる可能性が回避されます。
記憶術の頭字語は、演算順序の概念的理解を養うことができず、その目的や柔軟性に関する生徒の質問に答えていないとして批判されてきた。[ 31 ] [ 32 ]記憶術の頭字語で演算順序を学習する生徒は日常的に間違いを犯し、[ 33 ]教員養成課程の生徒も間違いを犯しやすい。[ 34 ]生徒が頭字語を正しく学習したとしても、雑学の暗記に過度に重点を置くと、実質的な数学的内容が疎外される。[ 12 ]頭字語の手順的な適用は、専門家の数学的記法に対する直観的な理解と一致しない。数学的記法は括弧や角括弧以外の方法でグループ化を示し、数式は線形に「順序付けられた」構造ではなく、ツリー状の階層である。さらに、数式を簡略化したり評価したりする順序は一つではなく、特定の式に対する普遍的な標準的な簡略化も存在しない。専門家は都合の良い順序で有効な変換や置換を流暢に適用するため、厳格な手順を学ぶと、学生は数学表記法について誤解を招き、限定的な理解に陥る可能性がある。[ 35 ]
計算機によって演算順序は異なります。[ 2 ]スタックを持たない多くの単純な計算機は、ボタン操作の優先順位付けをせずに連鎖入力を実装しており、より高度な計算機とは異なる結果を返します。例えば、単純な計算機では1 + 2 × 3 =9と入力すると計算結果が返されますが、より高度な計算機ではより標準的な優先順位が使用されるため、1 + 2 × 3 =7と入力すると計算結果が返されます。
電卓は指数を左辺または右辺に関連付ける場合があります。例えば、TI-92およびTI-30XS MultiViewの「Mathprintモード」では、式はa ( bc )と解釈されますが、TI-30XIIおよびTI-30XS MultiViewの「クラシックモード」では( ab ) cと解釈されます。a^b^c
のような式は、 TI-82 [ 3 ]や多くの最近のカシオ計算機[ 36 ](fx-9750GIIIなど一部の機種では設定可能)では 1/(2 x )と解釈されますが、TI-83や1996年以降に発売された他のすべてのTI計算機[ 37 ] [ 3 ] 、および代数表記法を採用したすべてのヒューレット・パッカード計算機では (1/2) xと解釈されます。暗黙の乗算の性質上、一部のユーザーは最初の解釈を期待するかもしれませんが、[ 38 ]後者の方が、乗算と除算は同等の優先順位を持つという規則に沿っています。[ 3 ]1/2x
ユーザーが計算機が式をどのように解釈するかわからない場合は、括弧を使用して曖昧さを排除することができます。[ 3 ]
演算順序は、標準的な数学表記法に中置記法を採用したことにより生じた。中置記法は、そのような規則がないと表記が曖昧になる可能性があるのに対し、後置記法や前置記法では演算順序が必要ない。[ 39 ] [ 40 ]したがって、逆ポーランド記法(RPN)を採用した計算機では、スタックを使用して式を正しい優先順位で入力するため、括弧やモデル固有の実行順序は不要である。[ 25 ] [ 22 ]
ほとんどのプログラミング言語は、数学で一般的に使用される順序に準拠した優先順位を使用しますが、[ 41 ] APL、Smalltalk、Occam、Maryなどの他の言語では演算子の優先順位ルールがありません(APLでは、評価は厳密に右から左ですが、Smalltalkでは、評価は厳密に左から右です)。
さらに、多くの演算子は結合法則に従わないため、単一レベル内の順序は通常、左から右へのグループ化によって定義され、16/(4/4) = 16ではなく(16/4)/4 = 116/4/4と解釈されます。このような演算子は「左結合法」と呼ばれます。例外もあります。例えば、リストのcons演算に対応する演算子を持つ言語では、通常、右から左へのグループ化(「右結合法」)が行われます。例えば、Haskell などです。1:2:3:4:[] == 1:(2:(3:(4:[]))) == [1,2,3,4]
C言語の作者であるデニス・リッチーは、C言語における優先順位(C++、Perl、PHPなど、C言語からその規則を借用したプログラミング言語にも共通)について、ビット演算子を比較演算子よりも上に移動した方が望ましいと述べています。[ 42 ]多くのプログラマーはこの順序に慣れていますが、 Python [ 43 ]やRuby [ 44 ]などの最近の人気言語では、この順序が逆になっています。多くのC言語で見られる演算子の相対的な優先順位は次のとおりです。
| 1 | () [] -> . :: | 関数呼び出し、スコープ、配列/メンバーアクセス |
| 2 | ! ~ - + * & sizeof 型キャスト ++ -- | (ほとんどの)単項演算子、sizeof、型キャスト(右から左) |
| 3 | * / %MOD | 乗算、除算、剰余 |
| 4 | + - | 足し算と引き算 |
| 5 | << >> | ビット単位の左シフトと右シフト |
| 6 | < <= > >= | 比較:より小さい、より大きい |
| 7 | == != | 比較:等しいと等しくない |
| 8 | & | ビットAND |
| 9 | ^ | ビット排他的論理和(XOR) |
| 10 | | | ビット単位の包含(通常)OR |
| 11 | && | 論理積 |
| 12 | || | 論理和 |
| 13 | ?: | 条件式(三項) |
| 14 | = += -= *= /= %= &= |= ^= <<= >>= | 代入演算子(右から左) |
| 15 | , | カンマ演算子 |

(a+b)^2/2(右)。後者は、与えられた式に固有の階層構造(「構文木」)に対応する。コンパイラは、この木から、最下層の階層で発生した演算が最初に実行されるように機械語を生成する。例:
!A + !Bは次のように解釈される(!A) + (!B)++A + !Bは次のように解釈される(++A) + (!B)A + B * Cは次のように解釈されるA + (B * C)A || B && Cは次のように解釈されるA || (B && C)A && B == Cは次のように解釈されるA && (B == C)A & B == Cは次のように解釈されるA & (B == C)( Python、Ruby、PARI/GPなどの一般的な言語では、A & B == Cは と解釈されます(A & B) == C。)
複数の言語にコンパイルするソース・ツー・ソースコンパイラは、言語間で演算順序が異なるという問題を明示的に処理する必要があります。例えばHaxeは、演算順序を標準化し、適切な場所に括弧を挿入することでそれを強制します。
ソフトウェア開発者の二項演算子の優先順位に関する知識の正確さは、ソースコード内での二項演算子の出現頻度に密接に関係していることがわかっています。[ 46 ]
演算順序は何世紀にもわたって徐々に形成されてきました。乗算が加算よりも優先されるという規則は、分配法則が自然な階層構造を示唆しているため、1600年代の代数記法の発展に組み込まれました。1920年代という比較的新しい時代にも、数学史家フロリアン・カジョリは、乗算が除算よりも優先されるべきか、あるいは両者を同等に扱うべきかについて意見の相違があったと述べています。「演算順序」という用語と「PEMDAS/BEDMAS」という記憶術は、標準化された教科書の需要が高まった19世紀後半から20世紀初頭にかけてようやく形式化されました。例えば、 a /2 bのような式( a /(2 b ) または ( a /2) × bと解釈できる)において、暗黙の乗算が明示的な乗算や除算よりも優先されるかどうかといった曖昧な点は、これらの慣習がまだ完全には安定していないことを示唆しています。[ 47 ] [ 48 ]
sin、汎用の関数名 (など) では使用しませんf。Regel 7: Ist F ( A ) Teilzeichenreihe eines arithmetischen Ausdrucks oder einer seiner Abkürzungen und F eine Funktionenkonstante und A eine Zahlenvariable oder Zahlenkonstante, so darf F A dafür geschrieben werden. [Darüber hinau ist noch die Abkürzung F n ( A ) für ( F ( A )) n üblich. Dabei kann F sowohl Funktionenkonstante als auch Funktionenvariable sein.]
代数の言語は
[ ...] 長い文や複雑な文を省略したり単純化したりするための速記として使用できます。
クリスタルの著書は、20世紀初頭の中等学校における代数学に関する英語の典拠であり、おそらくは後の多くの演算順序の記述の源泉となった。しかしながら、クリスタルの著書は当初、「÷」と「×」記号を含む式の評価について厳格な規則を確立した一方で、その後は、インライン分数を書く際に暗黙の乗算を除算よりも優先させるという一貫した方針を示しており、正式な規則と一般的な慣習との食い違いについて明確に議論することはなかった。
a
/
bc
という形式の式はa /( bc )と同じ意味です。さらに、log x /log y = (log x )/(log y )であり、 2 n ! = 2( n !) です。
PEMDASは、括弧(Parenthesis)、指数(Exponents)、乗算(Multiplication)、除算(Division)、加算(Addition)、減算(Subtraction)を表す演算順序の頭字語またはニーモニックです。この頭字語はアメリカ合衆国で広く使用されています。一方、英国やカナダなどの他の国では、BODMAS (Brackets、Order、Division、Multiplication、Addition、Subtraction) および BIDMAS (Brackets、Indices、Division、Multiplication、Addition、Subtraction) という頭字語が使用されています。
{{cite journal}}: CS1 maint: DOI inactive as of July 2025 (link)[...] 生徒は、乗算と除算、または加算と減算が隣り合う式で計算ミスを頻繁に起こします。 [...]
AOS
では暗黙の乗算が認識され、
平方根、対数、三角関数の後に、鉛筆と紙で作業するときのように引数を記述できるようになりました。
(注: TI-88 はプロトタイプとしてのみ存在し、一般にはリリースされませんでした。)